// /* USER CODE BEGIN Header */
// /**
//   ******************************************************************************
//   * @file    app_adc.h
//   * @brief   ADC应用层头文件
//   ******************************************************************************
//   * @attention
//   *
//   * Copyright (c) 2025 STMicroelectronics.
//   * All rights reserved.
//   *
//   * This software is licensed under terms that can be found in the LICENSE file
//   * in the root directory of this software component.
//   * If no LICENSE file comes with this software, it is provided AS-IS.
//   *
//   ******************************************************************************
//   */
// /* USER CODE END Header */

// #ifndef __APP_ADC_H
// #define __APP_ADC_H

// #ifdef __cplusplus
// extern "C" {
// #endif

// /* Includes ------------------------------------------------------------------*/
// #include "main.h"
// #include "adc.h"
// #include <stdint.h>
// #include <stdbool.h>

// /* USER CODE BEGIN Includes */

// /* USER CODE END Includes */

// /* Exported types ------------------------------------------------------------*/
// /* USER CODE BEGIN ET */

// /**
//  * @brief ADC应用层结构体
//  */
// typedef struct {
//     ADC_HandleTypeDef* hadc;        // ADC句柄
//     uint32_t channel;               // ADC通道
//     uint16_t raw_value;             // 原始ADC值
//     float voltage;                  // 转换后的电压值
//     float physical_value;           // 物理量值
//     bool is_valid;                  // 数据有效性标志
//     float calibration_offset;        // 校准偏移量
//     float calibration_gain;         // 校准增益
//     uint32_t sample_count;         // 采样计数
//     float average_value;           // 平均值
// } ADC_App_t;

// /**
//  * @brief 多通道ADC应用层结构体
//  */
// typedef struct {
//     ADC_HandleTypeDef* hadc;        // ADC句柄
//     uint16_t* raw_buffer;          // 原始数据缓冲区
//     float* voltage_buffer;         // 电压数据缓冲区
//     uint8_t channel_count;         // 通道数量
//     bool is_valid;                 // 数据有效性标志
//     bool dma_enabled;              // DMA使能标志
//     uint32_t conversion_count;     // 转换计数
//     float* average_buffer;        // 平均值缓冲区
//     uint8_t filter_samples;        // 滤波采样数
// } ADC_MultiChannel_App_t;

// /**
//  * @brief ADC通道配置结构体
//  */
// typedef struct {
//     uint32_t channel;              // ADC通道
//     float reference_voltage;       // 参考电压
//     float calibration_offset;       // 校准偏移
//     float calibration_gain;         // 校准增益
//     char* channel_name;            // 通道名称
// } ADC_Channel_Config_t;

// /* USER CODE END ET */

// /* Exported constants --------------------------------------------------------*/
// /* USER CODE BEGIN EC */

// // ADC相关常量定义
// #define ADC_RESOLUTION_12BIT       4095
// #define ADC_REFERENCE_VOLTAGE     3.3f
// #define ADC_MAX_CHANNELS           16
// #define ADC_FILTER_SAMPLES         10

// // ADC通道定义（根据您的配置）
// #define ADC_CHANNEL_VBAT           ADC_CHANNEL_VBAT
// #define ADC_CHANNEL_TEMP           ADC_CHANNEL_TEMPSENSOR_ADC5
// #define ADC_CHANNEL_EXT            ADC_CHANNEL_12

// /* USER CODE END EC */

// /* Exported macro ------------------------------------------------------------*/
// /* USER CODE BEGIN EM */

// // ADC值转换为电压的宏
// #define ADC_TO_VOLTAGE(adc_value)  (((float)(adc_value) / ADC_RESOLUTION_12BIT) * ADC_REFERENCE_VOLTAGE)

// // 电压转换为ADC值的宏
// #define VOLTAGE_TO_ADC(voltage)   ((uint16_t)((voltage) * ADC_RESOLUTION_12BIT / ADC_REFERENCE_VOLTAGE))

// /* USER CODE END EM */

// /* Exported variables --------------------------------------------------------*/
// /* USER CODE BEGIN EV */

// // 全局ADC应用层实例
// extern ADC_MultiChannel_App_t g_adc_app;

// /* USER CODE END EV */

// /* Exported function prototypes ----------------------------------------------*/
// /* USER CODE BEGIN EFP */

// /**
//  * @brief ADC应用层初始化
//  * @param adc_app: ADC应用层结构体指针
//  * @param hadc: ADC句柄指针
//  * @param channel: ADC通道
//  */
// void ADC_App_Init(ADC_App_t* adc_app, ADC_HandleTypeDef* hadc, uint32_t channel);

// /**
//  * @brief 读取ADC原始值
//  * @param adc_app: ADC应用层结构体指针
//  * @retval ADC原始值
//  */
// uint16_t ADC_App_ReadRaw(ADC_App_t* adc_app);

// /**
//  * @brief 读取ADC电压值
//  * @param adc_app: ADC应用层结构体指针
//  * @retval 电压值(V)
//  */
// float ADC_App_ReadVoltage(ADC_App_t* adc_app);

// /**
//  * @brief 设置ADC校准参数
//  * @param adc_app: ADC应用层结构体指针
//  * @param offset: 偏移量
//  * @param gain: 增益
//  */
// void ADC_App_SetCalibration(ADC_App_t* adc_app, float offset, float gain);

// /**
//  * @brief 读取物理量值（经过校准）
//  * @param adc_app: ADC应用层结构体指针
//  * @retval 物理量值
//  */
// float ADC_App_ReadPhysicalValue(ADC_App_t* adc_app);

// /**
//  * @brief ADC数据滤波（滑动平均）
//  * @param adc_app: ADC应用层结构体指针
//  * @param new_value: 新采样值
//  * @retval 滤波后的值
//  */
// float ADC_App_Filter(ADC_App_t* adc_app, float new_value);

// /**
//  * @brief 初始化多通道ADC应用层
//  * @param multi_adc: 多通道ADC应用层结构体指针
//  * @param hadc: ADC句柄指针
//  * @param raw_buffer: 原始数据缓冲区
//  * @param voltage_buffer: 电压数据缓冲区
//  * @param channel_count: 通道数量
//  */
// void ADC_MultiChannel_App_Init(ADC_MultiChannel_App_t* multi_adc, 
//                               ADC_HandleTypeDef* hadc, 
//                               uint16_t* raw_buffer, 
//                               float* voltage_buffer, 
//                               uint8_t channel_count);

// /**
//  * @brief 处理多通道ADC数据
//  * @param multi_adc: 多通道ADC应用层结构体指针
//  */
// void ADC_MultiChannel_App_Process(ADC_MultiChannel_App_t* multi_adc);

// /**
//  * @brief 启动多通道ADC DMA传输
//  * @param multi_adc: 多通道ADC应用层结构体指针
//  * @retval HAL状态
//  */
// HAL_StatusTypeDef ADC_MultiChannel_App_StartDMA(ADC_MultiChannel_App_t* multi_adc);

// /**
//  * @brief 停止多通道ADC DMA传输
//  * @param multi_adc: 多通道ADC应用层结构体指针
//  * @retval HAL状态
//  */
// HAL_StatusTypeDef ADC_MultiChannel_App_StopDMA(ADC_MultiChannel_App_t* multi_adc);

// /**
//  * @brief 获取指定通道的电压值
//  * @param multi_adc: 多通道ADC应用层结构体指针
//  * @param channel_index: 通道索引
//  * @retval 电压值
//  */
// float ADC_MultiChannel_App_GetVoltage(ADC_MultiChannel_App_t* multi_adc, uint8_t channel_index);

// /**
//  * @brief 获取指定通道的原始值
//  * @param multi_adc: 多通道ADC应用层结构体指针
//  * @param channel_index: 通道索引
//  * @retval 原始ADC值
//  */
// uint16_t ADC_MultiChannel_App_GetRaw(ADC_MultiChannel_App_t* multi_adc, uint8_t channel_index);

// /**
//  * @brief ADC转换完成回调函数
//  * @param hadc: ADC句柄指针
//  */
// void ADC_App_ConvCpltCallback(ADC_HandleTypeDef* hadc);

// /**
//  * @brief ADC错误回调函数
//  * @param hadc: ADC句柄指针
//  */
// void ADC_App_ErrorCallback(ADC_HandleTypeDef* hadc);

// /**
//  * @brief 全局ADC应用层初始化
//  */
// void ADC_App_GlobalInit(void);

// /**
//  * @brief 全局ADC应用层处理
//  */
// void ADC_App_GlobalProcess(void);

// /* USER CODE END EFP */

// #ifdef __cplusplus
// }
// #endif

// #endif /* __APP_ADC_H */
